package ControlLayer;
import ModelLayer.*;
import java.util.ArrayList;

/**
 * Controller class for the KundeBaseCtr
 * 
 * @author (Gruppe 1) 
 * @version (17.12.2012)
 */
public class KundeBaseCtr
{
    private static KundeBaseCtr instance;
    private kundeBase kundeBase;
    private Ansatte ansatte;
    
    private KundeBaseCtr()
    {
       kundeBase = kundeBase.getInstance();
    }
    /**
     * Singleton
     */
    public static KundeBaseCtr getInstance(){
        if(instance == null){
            instance = new KundeBaseCtr();
        }
        return instance;
    }
    /**
     * Find kunde vha. id
     * 
     * @return int id - Kundens id.
     */
    public Kunde getKundeById(int id)
    {
        return kundeBase.findKunde(id);
        }
    /**
     * Find kunde vha. telefonnummer
     * 
     * @return int telefonNr - Returner kunde vha. telefonnummer, hvis kunden ikke eksister meldes der null
     */
    public String getKundeByTelefonNr(int telefonNr)
    {
        if(kundeBase.findKunde(telefonNr) != null)
        {
            kundeBase.findKundeByTelefonNr(telefonNr).printDetails();
        }
        else{
            return "Kunden blev ikke fundet";
        }
        return null;
    }
    /**
     * Tilføjer nye kunde
     * @param int id - kundens id
     * @param String fnavn - Kundens fornavn
     * @param String enavn - Kundens efternavn
     * @param String adresse - Kundens adresse
     * @param String email - Kundens email
     * @param int postNr - kundens postnummer
     * @param String by - Kundens by
     * @param int telefonNr - Kundens telefonNr
     * @param double rabat - Kundens rabat
     * @param double kontoSaldo - Kundens saldo
     * @param double kreditLoft - Kundens KreditLoft
     */
    public void nyKunde(int id, String fnavn, String enavn, String adresse, String email, int postNr, String by, int telefonNr, double rabat, double kontoSaldo, double kreditLoft)
    {   
      kundeBase.addKunde(new Kunde(id, fnavn, enavn, adresse, email, postNr, by, telefonNr, rabat, kontoSaldo, kreditLoft));
    }
    /**
     * Tilføjer nye Ansat
     * @param String fnavn - ansattes fornavn
     * @param String enavn - ansattes efternavn
     * @param String email - ansattes email
     * @param String login - ansattes login
     * @param String password - ansattes password
     */
    public void nyAnsat(String fnavn, String enavn, String email, String login, String password)
    {   
      ansatte.addAnsat(new Ansat(fnavn, enavn, email, login, password));
    }
    /**
     * Sletter kunde vha. id 
     * 
     * @param int id - går ind i KundeBase og sletter kunde
     */
    public void deleteKunde(int id)
    {
        kundeBase.removeKunde(kundeBase.findKunde(id));
    }
    /**
     * Opdatere kunden i kundebase
     * @param int id - kundens id
     * @param String fnavn - Kundens fornavn
     * @param String enavn - Kundens efternavn
     * @param String adresse - Kundens adresse
     * @param String email - Kundens email
     * @param int postNr - kundens postnummer
     * @param String by - Kundens by
     * @param int telefonNr - Kundens telefonNr
     * @param double rabat - Kundens rabat
     * 
     * 
     */
    public void updatePerson (int id, String fnavn, String enavn, String adresse, String email, int postNr, String by, int telefonNr, double rabat)
    {
        Kunde kunde = kundeBase.findKundeByTelefonNr(telefonNr);
        kunde.setFnavn(fnavn);
        kunde.setEnavn(enavn);
        kunde.setAdresse(adresse);
        kunde.setPostNr(postNr);
        kunde.setBy(by);
        kunde.setEmail(email);
        kunde.setRabat(rabat);
    }
    public void updateAnsat (String fnavn, String enavn, String email, String login, String password)
    {
        Ansat ansat = ansatte.findAnsat(login);
        ansat.setFnavn(fnavn);
        ansat.setEnavn(enavn);
        ansat.setEmail(email);
        ansat.setLogin(login);
        ansat.setPassword();
    }
    /**
     * Lister alle personer i kundeBasen
     * 
     * @return kundeBase - Returner Kundebasen
     */
    public ArrayList listAllPersons()
    {
          return kundeBase.getKundeListe();
    }
    
}
